package com.rzjm.api.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.util.Date;
import java.util.Map;

/**
 * 筒仓测距设备表
 *
 * @author mr.zhou
 * @email zhouwei_nice@163.com
 * @date 2020-12-15 22:36:23
 */
@Data
@NoArgsConstructor
@Accessors(chain = true)
@TableName("ck_device_range")
public class DeviceRange implements Serializable {

	private static final long serialVersionUID = 1L;

	//主键
	@TableId(type = IdType.AUTO)
	private Integer id;
	private Integer shopId;
	private String deviceName;
	private String deviceNum;
	/**
	 * 设备类型 0 -  测粮仓 1 - 测油罐
	 */
	private Integer deviceType;
	/**
	 *  筒仓高度（圆柱部分和 圆锥部分的和）
	 */
	private Double storeHeight;
	/**
	 *  筒仓直径
	 */
	private Double storeDiameter;

	/**
	 * 筒仓  满仓状态  0 -  空仓  1 -  正常状态 2 - 满仓
	 */
	private Integer storeState;

	/**
	 * 是否是卧式  0 - 立式  1 - 卧式
	 */
	private Integer isLie;

	/**
	 *  是否是椭圆  0 - 正圆   1 - 椭圆
	 */
	private Integer isEllipse;
	/**
	 *  长半轴  单位米
	 */
	private Double longHalfShaft;
	/**
	 *  短半轴  单位米
	 */
	private Double shortHalfShaft;

	/**
	 *  圆柱部分高度
	 */
	private Double cylinderHeight;

	/**
	 *  下方圆锥体的高度
	 */
	private Double coneHeight;

	/**
	 *四角形的长
	 */
	private Double rectLength;

	/**
	 * 四角形的宽
	 */
	private Double rectWidth;


	private Integer sort;

	/**
	 *  圆锥的顶部角度
	 */
	private Double coneAngle;

	/**
	 *  圆锥斜边长  计算出来的
	 */
	private Double coneHypotenuse;

	/**
	 *  最大角度
	 */
	private Double maxAngle;

	/**
	 * 筒仓最大体积容量（圆柱部分和下方圆锥部分的和）
	 */
	private Double maxVolume;

	/**
	 *  圆柱体总体积
	 */
	private Double maxCylinderVolume;

	/**
	 * 圆锥体总体积
	 */
	private Double maxConeVolume;

	/**
	 *  新算法和老算法的差值，千克数
	 */
	private Double newMethodWeight;


	private Integer onlineState;

	@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
	private Date lastOnlineTime;
	@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
	private Date lastOfflineTime;
	private Double lastVolume;
	private Double lastEmptyVolume;
	@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
	private Date lastComputeTime;
	private String dataCode;

	private String simCardNum;

	private String simImei;

	@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
	private Date simExpireTime;

	private Date simOpenTime;

	private String simCardName;

	private Integer state;

	@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
	private Date createTime;

	/**
	 *  当前数据的平均高度
	 */
	private Double avgHeight;

	/**
	 *  容重
	 */
	private Integer plotRatio;
	/**
	 *  额外的系数 容重
	 */
	private Double extendRatio;

	/**
	 *  当前体积下的 总重量
	 */
	private Double totalWeight;

	/**
	 * 凸起时 调整的重量
	 */
	private Double bulgeKg;

	/**
	 * 凹下时 调整的重量
	 */
	private Double concaveKg;

	/**
	 * 开始的角度打出的长度
	 */
	private Double firstBevel;
	/**
	 *  最后的角度打出的长度
	 */
	private Double lastBevel;

	/**
	 *  中间凹凸类型 0 - 平  1 - 凸起  2 - 凹
	 */
	private Integer shapeType;

	/**
	 * 凹凸锥形体积
	 */
	private Double concaveConvexVolume;

	private Double lastHeightVolume;
	private Double lastVolumeNew;

	/**
	 * 平仓高度变量
	 */
	private Double heightDifference;

	/**
	 *  当前温度
	 */
	private String temperature;
	/**
	 *  当前湿度
	 */
	private String humidity;

	/**
	 *  最大量程
	 */
	private Double maxRange;

	/**
	 *  误差高度
	 */
	private Double errorHeight;

	/**
	 *  有效角度
	 */
	private Double effectiveAngle;


	/**
	 *  修正误差的角度
	 */
	private Integer errorAngle;

	/**
	 *  空仓的配置高度
	 */
	private Double emptyHeight;

	private Integer lastOpUserId;

	private Integer isEmpty;


	/**
	 * 空仓状态情况下 是否显示空仓 0 - 不显示空仓  1 - 显示空仓
	 */
	private Integer isShowEmpty;
	/**
	 * 满仓状态情况下 是否显示满仓 0 - 不显示满仓  1 - 显示满仓
	 */
	private Integer isShowFull;

	/**
	 *  是否显示新算法结果 0 - 默认 1 - 显示新算法数据
	 */
	private Integer isShowNewResult;


	/**
	 *  当前体积下的 总重量
	 */
	@TableField(exist = false)
	private Double totalWeightDun;

	/**
	 *  当前体积下的 总重量
	 */
	@TableField(exist = false)
	private Double totalWeightDunNew;

	@TableField(exist = false)
	private String shopName;

	@TableField(exist = false)
	private Integer measureSeconds = 31 * 1000;

	@TableField(exist = false)
	private Map<String,Object> timeData;

	@TableField(exist = false)
	private Integer isMeasure = 0;


	@TableField(exist = false)
	private DeviceRangeResult lastResult;


	@TableField(exist = false)
	private Double maxHeight;
	@TableField(exist = false)
	private Double minHeight;
	@TableField(exist = false)
	private Double lastHeight;

}
